import Vue from 'vue'
import ElementUI, { Message } from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

import App from './App.vue'
import './components'

import router from './router'
import store from './store'
ElementUI.Dialog.props.lockScroll.default = false
Vue.use(ElementUI)
require('echarts')
Vue.config.productionTip = false

// 监听事件之前先校验内容
Vue.mixin({
  data () {
    return {
      isInputValid: true // 校验状态标识，默认为 true
    }
  },
  methods: {
    validateNumberInput (input) {
      if (!/^\d*$/.test(input)) {
        // 如果输入不是数字类型，显示消息提示
        this.isInputValid = false
        this.$message.warning('请输入数字类型')
      } else {
        this.isInputValid = true
      }
    }
  }
}
)
// 校验输入框是否是数字类型
Vue.directive('number-check', {
  bind (el, binding, vnode) {
    el.addEventListener('input', handleInput)
    el.addEventListener('paste', handlePaste)

    function handleInput (event) {
      const inputValue = event.target.value
      if (!/^\d*$/.test(inputValue)) {
        Message.warning('请输入数字类型')
        event.target.value = inputValue.replace(/\D/g, '')
      }
    }

    function handlePaste (event) {
      const clipboardData = event.clipboardData || window.clipboardData
      const pastedData = clipboardData.getData('Text')
      if (!/^\d*$/.test(pastedData)) {
        event.preventDefault() // 阻止默认粘贴行为
        Message.warning('请输入数字类型')
      }
    }
  }
})

// 直接过滤掉特殊字符（如零宽字符）
Vue.filter('removeInvisibleChars', function (value) {
  if (!value) return ''
  return value.replace(/\u200B|\u200C|\u200D/g, '') // 替换零宽字符
})

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
